package com.cl.pattern.singleton.staticInnerClass;

/**
 * 利用静态内部类 实现单例
 *
 * 优点：
 * 1、避免了饿汉式内存浪费的问题
 * 2、避免了 懒汉式 synchronized 关键字带来的性能问题
 * @Description
 * @Author Small
 * @Date 2020/6/1 15:58
 * @Version 1.0
 **/
public class StaticInnerClass {

    /**
     * 私有的构造方法
     */
    private StaticInnerClass() {
    }


    /**
     * 公共的静态获取实例的方法
     * @return
     */
    public static final  StaticInnerClass getInstance() {
        return  SingletonHolder.LAZY;
    }

    /**
     * 静态内部类默认不加载，只有在调用的时候才加载
     */
    private static class SingletonHolder{
        private static final StaticInnerClass LAZY = new StaticInnerClass();
    }
}
